---@class net
---https://nodemcu.readthedocs.io/en/release/modules/net/
net = {}

---@class netServer
local netServer = {}
---@class netSocket
local netSocket = {}
---@class netUdpSocket
local netUdpSocket = {}

---创建TCP客户端
---https://nodemcu.readthedocs.io/en/release/modules/net/#netcreateConnection
---@return netSocket
function net.createConnection()
end

---创建一个TCP侦听套接字(服务器)。
---https://nodemcu.readthedocs.io/en/release/modules/net/#netcreateServer
---@param timeout number @断开非活动客户端连接的时间:1~28800秒，默认30秒。
---@return netServer
function net.createServer(timeout)
end

---创建udp socket
---https://nodemcu.readthedocs.io/en/release/modules/net/#netcreateudpsocket
---@return netUdpSocket
function net.createUDPSocket()
end

---
---@param
---@return nil
function net.ifinfo()
end

---
---@param
---@return nil
function net.multicastJoin()
end

---
---@param
---@return nil
function net.multicastLeave()
end

---
---@param
---@return nil
function netServer:close()
end

---
---@param
---@return nil
function netServer.listen()
end

---
---@param
---@return nil
function netServer.getaddr()
end

---
---@param
---@return nil
function netSocket:close()
end

---连接到远程服务器
---@param port number
---@param ip string
---@return nil
function netSocket:connect(port, ip)
end

---
---@param
---@return nil
function netSocket:dns()
end

---
---@param
---@return nil
function netSocket:getpeer()
end

---
---@param
---@return nil
function netSocket:getaddr()
end

---
---@param
---@return nil
function netSocket:hold()
end

---注册特定事件的回调函数。
---@param event "connection"|"reconnection"|"disconnection"|"receive"|"sent" @
---@param cb fun(socket:self,arg:string|nil) @回调函数。可以为nil来删除回调。callback的第一个参数是套接字。如果event为“receive”，则第二个参数是接收到的字符串数据。如果event为“disconnect”或“reconnection”，则第二个参数为error code。如果指定了reconnection event，则disconnect只接收“正常关闭”事件。否则，所有连接错误(正常关闭)传递到断开连接事件。
---@return nil
function netSocket:on(event, cb)
end

---向远程对等体发送数据。
---@note 多个连续的send()调用不能保证工作(通常也不能)，因为网络请求被SDK视为独立的任务。但是，订阅套接字上的“sent”事件，并在该回调中发送额外的数据(或关闭)。详情见#730。
---@param data string @将被发送到服务器的字符串数据
---@param cb fun() @发送成功后的回调
---@return nil
function netSocket:send(data, cb)
end

---
---@param
---@return nil
function netSocket:ttl()
end

---
---@param
---@return nil
function netSocket:unhold()
end

---关闭套接字
---@param
---@return nil
function netUdpSocket:close()
end

---从IP地址监听端口。
---@param port number @端口号
---@return nil
function netUdpSocket:listen(port)
end

---注册特定事件的回调函数。语法和函数类似于net.socket:on()。但是，只支持“receive”、“sent”和“dns”事件。
---@see netSocket.on
---@param event "receive"|"sent"|"dns" @
---@param cb function @
---@return nil
function netUdpSocket:on(event, cb)
end

---发送数据到指定的ip的端口
---@param port number @远程端口
---@param ip string @远程IP
---@param data string @字符串
---@return nil
function netUdpSocket:send(port, ip, data)
end

---
---@param
---@return nil
function netUdpSocket:dns()
end

---
---@param
---@return nil
function netUdpSocket:getaddr()
end

---
---@param
---@return nil
function netUdpSocket:ttl()
end

---
---@param
---@return nil
function net.dns.getdnsserver()
end

---
---@param
---@return nil
function net.dns.resolve()
end

---
---@param
---@return nil
function net.dns.setdnsserver()
end

---
---@param
---@return nil
function net.ping()
end
